1

Introducción a los agentes resolutores de problemas

PolyU COMP5511Lecture 2
00:00

De los reflejos a la planificación

En la evolución del diseño de agentes, pasamos de los agentes reactivos, que asignan percepciones directamente a acciones según reglas simples (p. ej., "Si el auto de adelante frena, activar el frenado"), a los agentes resolutores de problemas. Los agentes reactivos operan según el contexto inmediato, mientras que los agentes resolutores de problemas están basados en objetivos. Estos consideran las consecuencias futuras de sus acciones para encontrar una secuencia que satisfaga un objetivo específico.

  • Agente reactivo: $Action = Function(Percept)$
  • Agente planificador: $Action\_Sequence = Search(State, Goal)$

La representación atómica del estado

En este nivel fundamental, los agentes utilizan una representación atómica. Esto significa que el estado del mundo se trata como una caja negra: un nodo singular sin estructura interna visible para el algoritmo de búsqueda. El agente razona únicamente sobre:

  • Estados ($S$): Instantáneas del entorno.
  • Acciones ($A$): Transiciones entre estados.
  • Prueba de objetivo: Una verificación booleana de si el estado $s \in S_{goal}$.

El ciclo de resolución de problemas

Un agente resolutor de problemas sigue un ciclo distintivo de cuatro pasos para navegar por el entorno:

  1. Formulación del objetivo: Decidir qué objetivo perseguir según la situación actual.
  2. Formulación del problema: Abstraer el mundo real en un modelo matemático (estados y acciones).
  3. Búsqueda: Simular secuencias de acciones para encontrar la ruta óptima.
  4. Ejecución: Realizar las acciones encontradas durante la fase de búsqueda sin más deliberación (asumiendo un entorno estático).
Implementación en Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)